//go:build windows
// +build windows

package main

import (
	"embed"
	"fmt"
	"io/fs"
	"log"
	"os"
	"time"

	浏览器类 "gitee.com/go_888/webview2"
)

//go:embed tmp.html
var html文本 embed.FS

func main() {
	var 是否全屏显示, 是否置顶 bool

	w := 浏览器类.X创建(浏览器类.X结构_Web视图选项{
		X浏览器缓存: "C:\\wwww",
		X开发者工具: false,
		X右键菜单:  false,
		X自动聚焦:  true,
		X窗口选项: 浏览器类.X结构_窗口选项{
			X窗口标题:   "增强版 Webview 演示",
			X窗口宽度:   1024,
			X窗口高度:   768,
			X图标文件路径: "logo.ico",
			X是否居中:   true,  // 居中
			X是否无边框:  false, // 无边框
			X是否全屏:   false, // 全屏
			X是否置顶:   false, // 置顶
			X可调整大小:  true,  // 可调整大小
			X最大高度:   900,
			X最大宽度:   1000,
			X最小高度:   400,
			X最小宽度:   400,
			X禁止最小化:  false, // 可最小化
			X禁止最大化:  true,  // 可最大化
			X隐藏窗口:   false,
			X隐藏任务栏:  true,
			X默认背景色:  "#FFFFFF", // 默认背景色 (CSS 格式，如 "#FFFFFF")
		},
	})
	fmt.Println(w.X取窗口句柄())

	if w == nil {
		log.Fatalln("加载 webview 失败。")
	}
	defer w.X销毁()
	最小化窗口 := false
	// 基本制热键
	热键s := map[string]struct {
		desc   string
		热键处理程序 浏览器类.X热键处理程序
	}{
		"Ctrl+Alt+Q": {"退出程序", func() {
			log.Println("Ctrl+Alt+Q 按下，退出...")
			w.X销毁()
			os.Exit(0)
		}},
		"Ctrl+Alt+M": {"最小化窗口", func() {
			if 最小化窗口 {
				log.Println("还原窗口...")
				w.X还原窗口()
				最小化窗口 = false
			} else {
				log.Println("最小化窗口...")
				w.X最小化窗口()
				最小化窗口 = true
			}
		}},
		"Ctrl+Alt+F": {"切换全屏", func() {
			是否全屏显示 = !是否全屏显示
			log.Printf("切换全屏: %v", 是否全屏显示)
			w.X设置全屏(是否全屏显示)
		}},
		"Ctrl+Alt+T": {"切换置顶", func() {
			是否置顶 = !是否置顶
			log.Printf("切换置顶: %v", 是否置顶)
			w.X设置置顶(是否置顶)
		}},
		// // 浏览器控制热键
		// "Ctrl+R": {"刷新页面", func() {
		// 	log.Println("刷新页面...")
		// 	w.Reload()
		// }},
		// "Alt+Left": {"后退", func() {
		// 	log.Println("后退...")
		// 	w.Back()
		// }},
		// "Alt+Right": {"前进", func() {
		// 	log.Println("前进...")
		// 	w.Forward()
		// }},
		// "Esc": {"停止加载", func() {
		// 	log.Println("停止加载...")
		// 	w.Stop()
		// }},

		// // 窗口控制热键
		// "Ctrl+M": {"最小化", func() {
		// 	log.Println("最小化窗口...")
		// 	w.Minimize()
		// }},
		// "Ctrl+Up": {"最大化", func() {
		// 	log.Println("最大化窗口...")
		// 	w.Maximize()
		// }},
		// "Ctrl+Down": {"还原窗口", func() {
		// 	log.Println("还原窗口...")
		// 	w.Restore()
		// }},
		// "Ctrl+C": {"居中窗口", func() {
		// 	log.Println("居中窗口...")
		// 	w.Center()
		// }},

		// // 开发工具热键
		// "F12": {"开发者工具", func() {
		// 	log.Println("打开开发者工具...")
		// 	w.OpenDevTools()
		// }},

		// // 清理热键
		// "Ctrl+Shift+Delete": {"清除缓存", func() {
		// 	log.Println("清除缓存...")
		// 	w.ClearCache()
		// }},
		// "Ctrl+Shift+C": {"清除Cookies", func() {
		// 	log.Println("清除Cookies...")
		// 	w.ClearCookies()
		// }},
	}

	// 注册所有热键
	for key, item := range 热键s {
		if err := w.X注册热键(key, item.热键处理程序); err != nil {
			log.Printf("警告: 注册热键 %s (%s) 失败: %v", key, item.desc, err)
		} else {
			log.Printf("成功注册热键: %s (%s)", key, item.desc)
		}
	}

	// 读取HTML内容
	htmlContent, err := fs.ReadFile(html文本, "tmp.html")
	if err != nil {
		log.Fatalln("无法读取 HTML:", err)
	}

	// 注入HTML内容
	w.X注入js(`
		document.addEventListener('DOMContentLoaded', function() {
			document.body.insertAdjacentHTML('beforeend', ` + "`" + string(htmlContent) + "`" + `);
		});
	`)

	//// 关闭开发者工具
	//w.X关闭开发者工具()
	//
	//// 禁用右键菜单
	//w.X禁用右键菜单()

	// 加载网页
	w.X导航("https://www.baidu.com/")

	// 设置半透明
	w.X设置窗口透明度(1)

	// 居中显示
	//w.X居中窗口()
	//w.X最小化窗口()
	// 状态监听
	w.X事件_加载状态变化(func(是否正在加载 bool) {
		if 是否正在加载 {
			log.Println("页面正在加载...")
		} else {
			log.Println("页面加载完成!")
		}
	})

	w.X事件_URL变化(func(url string) {
		log.Printf("URL已更改: %s", url)
	})

	w.X事件_标题变化(func(标题 string) {
		log.Printf("标题已更改: %s", 标题)
		w.X设置标题(标题) // 自动更新窗口标题
	})

	w.X事件_全屏状态变化(func(是否全屏显示 bool) {
		log.Printf("全屏状态: %v", 是否全屏显示)
	})

	// 定时任务例：每60秒刷新一次页面
	go func() {
		ticker := time.NewTicker(60 * time.Second)
		for range ticker.C {
			w.X加入队列(func() {
				log.Println("执行定时刷新...")
				w.X刷新页面()
			})
		}
	}()

	//w.X注销热键("Ctrl+Alt+Q")
	// 运行
	浏览器类.X运行()
}
